package top.yinhe.study.javawebjdbc.dao;

import top.yinhe.study.javawebjdbc.entity.Tbclass;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class TbClassDAO {
//    jdbc.java数据库连接
//    dao:数据访问对象
//    entity:实体类，一般就是描述数据的类
//    java.sql.Connection类就是数据库的连接类

public static int insert(Tbclass tbClass ) throws SQLException {
//    连接数据库
    Connection conn = DBHelper.getConnection();
//    预备添加的语句,一个？表示一个参数
    String sql = "insert into tb_class(classname, classinfo) values(?,?)";
//java的预处理sql语句
    PreparedStatement ps = conn.prepareStatement(sql);
//    设置参数对应的值
    ps.setString(1,tbClass.getClassname());
    ps.setString(2,tbClass.getClassinfo());
//    执行语句
    int i = ps.executeUpdate();
//    关闭数据连接
    conn.close();
    return i;

}


public static List<Tbclass> query() throws SQLException {
    List<Tbclass> list = new ArrayList<>();
//数据库链接
    Connection conn = DBHelper.getConnection();
//    查询语句
    String sql = "select * from tb_class";
//    预处理sql语句
    PreparedStatement ps = conn.prepareStatement(sql);
//    执行语句
    ResultSet rs = ps.executeQuery();
//    查询结果集的next是读取下一行数据，如果读取到就返回真，否则就是假
    while (rs.next()){
//        将数据库的记录转换为java对象
        Tbclass tbClass = new Tbclass();
//        rs.get数据类型（“数据表中字段名称”）就是获取查询结果中指定字段的数据
        tbClass.setId(rs.getInt("id"));
        tbClass.setClassname(rs.getString("classname"));
        tbClass.setClassinfo(rs.getString("classinfo"));
        //java的Date类型对应的是数据库api的Timestamp类型
        tbClass.setCreated(rs.getTimestamp("created"));
//        添加到集合
        list.add(tbClass);
    }
    conn.close();
    return list;
}


public static int delete(Integer id) throws SQLException {
    Connection conn = DBHelper.getConnection();
    String sql = "delete from tb_class where id = ?";
    PreparedStatement ps = conn.prepareStatement(sql);
    ps.setInt(1,id);
    int i = ps.executeUpdate();
    conn.close();
    return i;
}



}
